\documentclass[tikz,border=2mm]{standalone}
\usepackage{array,amsmath,mathptmx,xcolor}
\usepackage[UTF8]{ctex}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\usepackage{tikz-cd}
\usepackage{tikz,graphicx,subfig,caption} % Required for drawing custom shapes
\usetikzlibrary{fit,matrix,chains,arrows,shapes,positioning,arrows.meta,chains,shadows,shapes.callouts,decorations.text,shapes.symbols,shapes.misc, positioning,decorations.pathreplacing,calc}
\begin{document}
	\begin{tikzpicture}[>=latex,every node/.style={anchor=south west,,inner sep=0,fill=white}]
		
		%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
		\node[drop shadow] at (0,0) (table1){
			\begin{tabular}{|C{6em}|}
				\hline 
				语法分析器 \\ \hline
			\end{tabular}
		};
		
		\node(point1) [align=left] at ([xshift=-5em,yshift=-0.5em]table1.west) {源程序};
		\node(point2) [align=left] at ([xshift=3em,yshift=-0.5em]table1.east) {TOKEN序列(已经做过语法分析)};
		\node(table2) [align=left] at ([xshift=-2.5em,yshift=-5em]table1.south) {
			\begin{tabular}{|C{4em}|}
				\hline 
				扫描器 \\ \hline
			\end{tabular}
		};
		\node (point3) [align=left] at ([xshift=-5.5em,yshift=0.1em]table2.north) {getword};
		
		
		\draw[->] (point1.east) -- (table1.west);
		\draw[->] (table1.east) -- (point2.west);
		\draw[->] ([xshift=-1em]table1.south) -- node[left]{命令}([xshift=-1em,yshift=-3.4em]table1.south);
		\draw[->] ([xshift=1em]table2.north) -- node[right]{TOKEN}([xshift=1em,yshift=3.4em]table2.north);
		
		% \node at ([xshift=-12em,yshift=0.5em]table1.north){\color{blue}{$·标识符:$};
			
		\end{tikzpicture}
	\end{document}